#include <stdio.h>
#include <stdlib.h>

FILE *fp = NULL;
volatile unsigned long recursion_count = 0; // 计数器（volatile防止优化）

void a(int b) {
    recursion_count++;
    fprintf(fp, "Recursion count: %lu\n", recursion_count);
    fflush(fp); // 强制写入磁盘，避免缓存丢失
    
    // 可选：每1000次打印控制台提示（减少性能影响）
    if (recursion_count % 1000 == 0) {
        printf("Current count: %lu\n", recursion_count);
    }
    
    a(b + 1); // 无限递归
}
int main() {
    // 打开文件（追加模式避免覆盖）
    fp = fopen("recursion_log.txt", "a");
    if (!fp) {
        perror("文件打开失败");
        exit(EXIT_FAILURE);
    }
    
    // 写入文件头
    fprintf(fp, "Recursion Log Started\n");
    fprintf(fp, "Timestamp: %s\n", __TIME__);
    fprintf(fp, "Date: %s\n\n", __DATE__);
    
    a(0); // 启动递归
    
    // 正常情况不会执行到此处
    fclose(fp);
    return 0;
}